package com.naiterui.ehp.bp.constants;

/**
 * Im常量
 *
 * @author yangfuya
 * @version 1.0
 * @date 2021/7/1 17:14
 **/
public interface ImConstants {

    /************ 医生、患者通用前缀 ************/

    /**
     * 医生端通用前缀：<code>PREFIX_DR</code>
     */
    String PREFIX_DR = "dr_";
    /**
     * 患者端通用前缀：<code>PREFIX_PT</code>
     */
    String PREFIX_PT = "pt_";

    /************ 消息类型 ************/

    /**
     * 文本消息
     */
    int MESSAGE_TYPE_TEXT = 1;

    /**
     * 图片消息
     */
    int MESSAGE_TYPE_MEDIA_IMG = 2;

    /**
     * 音频消息
     */
    int MESSAGE_TYPE_MEDIA_AUDIO = 4;

    /**
     * 视频消息
     */
    int MESSAGE_TYPE_MEDIA_VIDEO = 8;

    /**
     * 药方消息
     */
    int MESSAGE_TYPE_DRUG = 16;

    /**
     * 付费服务支付完成后的通知消息
     */
    int MESSAGE_TYPE_PAID_CONSULT = 1024;

    /**
     * 患者填写的病历
     */
    int MESSAGE_TYPE_PATEINTS_MEDICAL_RECORD = 10002;

    /**
     * 患者最近一份病历
     */
    int MESSAGE_TYPE_PATIENTS_LAST_MEDICAL_RECORD = 10003;

    /**
     * 系统扩展信息
     */
    int MESSAGE_TYPE_REMIND_PATIENTS_FILL_MEDICAL_RECORD = 10004;

    /**
     * 医生填写病历消息
     */
    int MESSAGE_TYPE_DOCTORS_MEDICALRECORD = 10005;

    /**
     * 患者服务评价
     */
    int MESSAGE_TYPE_PATIENTS_SERVICE_EVALUATION = 10006;

    /**
     * 患者病情消息
     */
    int MESSAGE_TYPE_PATIENTS_DISEASE = 10007;

    /**
     * 患者咨询结束
     */
    int MESSAGE_TYPE_PATIENTS_CONSULT_FINISH = 10008;

    /**
     * 医生发送处方系统提醒
     */
    int MESSAGE_TYPE_PATIENTS_PRESCRIPTION = 10009;

    /**
     * 患者首次扫码关注医生赠送问诊提示消息
     */
    int MESSAGE_TYPE_PATIENTS_FIRST_BIND = 10010;
    
    /**
     * 患者首次扫码关注医生就诊人未实名
     */
    int MESSAGE_TYPE_FIRST_BIND_UNNAMED = 10011;

    /**
     * 就诊人信息完善消息类型
     */
    int MESSAGE_TYPE_INQUIRER_INFO_PERFECT = 10012;

    /**
     * 随访卡片
     */
    int MESSAGE_TYPE_FOLLOW_UP = 10013;

    /**
     * 随访填写通知
     */
    int MESSAGE_TYPE_FOLLOW_UP_FILLIN = 10014;

    /**
     * 视频问诊 发送图片类型
     */
    int MESSAGE_TYPE_VIDEO_IMAGE = 20001;


    /********** 通知类消息分类 **********/

    /**
     * 客户端连接状态通知
     */
    int EVENT_CAT_CONNECTION = 0;

    /**
     * 服务器消息通知
     */
    int EVENT_CAT_NOTICE = 1;

    /************ 连接类型 ************/

    /**
     * 连接建立
     */
    int CONNECT_ESTABLISHED = 0;

    /**
     * 用户退出登录关闭连接
     * 此情况下不会发送PUSH消息
     */
    int CONNECT_LOGOUT = 1;

    /**
     * 正常关闭连接
     */
    int CONNECT_DISCONNECT = 2;

    /**
     * 意外断开连接
     */
    int CONNECT_SUDDENLY = 3;

    /************ 事件类型 ************/

    /************ 消息来源 ************/

    /**
     * 消息来源 -- 患者端
     */
    int MESSAGE_RESOURCE_PATIENT = 0;

    /**
     * 消息来源 -- 医生端
     */
    int MESSAGE_RESOURCE_DOCTOR = 1;

    /************ 微信参数 ************/

    /**
     * 调用微信接口发送消息参数类型 -- 文本消息
     */
    int MESSAGE_WEIXIN_SEND_TYPE_TEXT = 1;

    /**
     * 调用微信接口发送消息参数类型 -- 图片消息
     */
    int MESSAGE_WEIXIN_SEND_TYPE_IMAGE = 2;

    /**
     * 调用微信接口发送消息参数类型 -- 音频消息
     */
    int MESSAGE_WEIXIN_SEND_TYPE_RADIO = 3;

    /**
     * 调用微信接口发送消息参数类型 -- 用药消息
     */
    int MESSAGE_WEIXIN_SEND_TYPE_DRUG = 5;

    /**
     * 付费咨询支付完成后通知患者消息
     */
    int MESSAGE_WEIXIN_SEND_TYPE_PAID_CONSULT = 8;

    /**
     * 提醒患者填写病历消息
     */
    int PATIENTS_MEDICAL_FILL_REMINDER = 11;

    /**
     * 发送病历消息回执消息
     */
    int MEDICAL_RECORD_MESSAGE_RECEIPT = 12;

    /**
     * 医生填写的病历消息
     */
    int MESSAGE_WEIXIN_DOCTORS_MEDICALRECORD = 14;
    /************ 缓存前缀 ************/

    /**
     * 缓存用户状态的Redis Key前缀
     */
    String CACHE_KEY = "naiterui_im_client_state_";

    /**
     * 医生信息快照缓存 ：<code>CACHT_KEY_INFO_DOCTOR</code>
     */
    String CACHT_KEY_INFO_DOCTOR = "naiteruipatiert|disdoctor.";
    /**
     * 医生账户状态key：<code>DOCTOR_STATUS_KEY</code>
     */
    String DOCTOR_STATUS_KEY = "status";

    /**
     * 患者被冻结缓存key
     */
    String CACHE_KEY_DIS_PATIENT = "naiterui-pt|dis_patient_";

    /**
     * 患者每日首条消息redis
     */
    String CACHE_PATIENT_FIRST = "naiterui_im|patient_firstmsg_";

    /**
     * 患者开启会话后 非首条消息标识
     */
    String CACHE_PATIENT_EXSIT_MESSAGE_IN_A_SESSION = "naiterui_im|patient_exsit_message_in_a_session_";

    /**
     * 待发送患者填写的病历缓存KEY
     */
    String CACHE_PATIENTS_MEDICAL_RECORD_TOSEND_KEY = "naiterui_im|patients_medical_record_";

    /************ PUSH推送用户类型，d:医生，p:患者 ************/

    /**
     * PUSH推送用户类型，d:医生：<code>PUSH_USER_TYPE_DOCTOR</code>
     */
    String PUSH_USER_TYPE_DOCTOR = "d";

    /**
     * PUSH推送用户类型，p:患者：<code>PUSH_USER_TYPE_PATIENT</code>
     */
    String PUSH_USER_TYPE_PATIENT = "p";

    /**
     * 会话是否付费 1-收费
     */
    Integer CONSULT_PAY_TYPE_CHARGE = 1;
    /**
     * 会话是否付费 0-免费
     */
    Integer CONSULT_PAY_TYPE_FREE = 0;

    /**
     * 活动付费2-活动付费
     */
    Integer CONSULT_PAY_TYPE_ACTIVITY_PAY = 2;


    /**
     * 支付成功--支付状态
     */
    int SESSION_PAY_STATUS_SUCCESS = 2;
    /**
     * 支付中--支付状态
     */
    int SESSION_PAY_STATUS_PAYMENT_IN = 4;
    /**
     * 支付失败--支付状态
     */
    int SESSION_PAY_STATUS_FAIL = 3;

    /**
     * 医生未开启付费会话设置
     */
    int SESSION_PAY_NO_REQUIRE = 0;

    /************ 会话列表概要消息显示文案 *************/
    /**
     * 附加启事消息显示位置(相对主体消息)
     */
    Integer ADDITIONAL_NOTICE_DISPLAY_POSITION_B = 1;// 前
    Integer ADDITIONAL_NOTICE_DISPLAY_POSITION_A = 2;// 后

    /**
     * 会话有效
     */
    int SESSION_VALID = 1;
    /**
     * 会话无效
     */
    int SESSION_INVALID = 0;

    /**
     * 会话 自动结束
     */
    int SESSION_CLOSE_TRIGGER_SOURCE_AUTO = 0;

    /**
     * 医生手动结束
     */
    int SESSION_CLOSE_TRIGGER_SOURCE_DOCTOR_MANUAL = 1;
    /**
     * 删除患者结束会话
     */
    int SESSION_CLOSE_TRIGGER_SOURCE_DELETE_PATIENT = 2;
    /**
     * 禁用医生结束会话
     */
    int SESSION_CLOSE_TRIGGER_SOURCE_DISABLED_DOCTOR = 3;

    /**
     * 全部可见
     */
    public static final int MESSAGE_VISUAL_TYPE_ALL = 0;
    /**
     * 医生可见
     */
    public static final int MESSAGE_VISUAL_TYPE_DOCTOR = 1;
    /**
     * 患者可见
     */
    public static final int MESSAGE_VISUAL_TYPE_PATIENT = 2;
    /**
     * 系统消息标识-用户
     */
    public static final int SYS_MSG_TYPE_CONSUMER = 0;
    /**
     * 系统消息标识-系统
     */
    public static final int SYS_MSG_TYPE_SYSTEM = 1;
    /**
     * 应用来源-患者APP
     */
    public static final int HEADER_ORIGIN_PATIENT_APP = 0;
    /**
     * 应用来源-医生APP
     */
    public static final int HEADER_ORIGIN_DOCTOR_APP = 1;

}
